package com.itheima.reggie.common;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

/*
    基于ThreadLocal封装得工具类，给 mp 得自动填充提供 id
        //因为 自动填充 类里面使用不了 request，所以无法获取 session 中得用户id
        //但是可以通过 ThreadLocal 进行获取 id
        //客户端发送得每一个 http 请求都是一个单独的线程，采用线程隔离，相互之间不影响，只有http里面访问得方法才是同一个 thread
        //每一个http都会请求过滤器，所以可以在过滤器（检查登陆状态时候）中 保存 用户id 到 ThreadLocal中，在这里进行取值
 */
@Slf4j
public class BaseContext {
    public static ThreadLocal<Long> threadLocal = new ThreadLocal<>();

    /**
     * 保存用户 id
     * @param id
     */
    public static void setCurrentThreadId(Long id){
        threadLocal.set(id);
    }

    /**
     * 获取用户 id
     * @param id
     * @return
     */
    public static Long getCurrentThreadId(){
        return threadLocal.get();
    }
}
